package ink.onei.common.constant;

import io.jsonwebtoken.Claims;

/**
 * 通用常量信息
 *
 * @author nekotako
 */
public class Constants {

    // UTF-8 字符集
    public static final String UTF8 = "UTF-8";

    // GBK 字符集
    public static final String GBK = "GBK";

    // www主域
    public static final String WWW = "www.";

    // http请求
    public static final String HTTP = "http://";

    // https请求
    public static final String HTTPS = "https://";

    // 通用成功标识
    public static final String SUCCESS = "0";

    // 通用失败标识
    public static final String FAIL = "1";

    // 登录成功
    public static final String LOGIN_SUCCESS = "Success";

    // 注销
    public static final String LOGOUT = "Logout";

    // 注册
    public static final String REGISTER = "Register";

    // 登录失败
    public static final String LOGIN_FAIL = "Error";

    // 所有权限标识
    public static final String ALL_PERMISSION = "*:*:*";

    // 管理员角色权限标识
    public static final String SUPER_ADMIN = "admin";

    // 角色权限分隔符
    public static final String ROLE_DELIMETER = ",";

    // 权限标识分隔符
    public static final String PERMISSION_DELIMETER = ",";

    // 验证码有效期（分钟）
    public static final Integer CAPTCHA_EXPIRATION = 2;

    // 令牌
    public static final String TOKEN = "token";

    // 令牌前缀
    public static final String TOKEN_PREFIX = "Bearer ";

    // 令牌前缀
    public static final String LOGIN_USER_KEY = "login_user_key";

    // 用户ID
    public static final String JWT_USERID = "userid";

    // 用户名称
    public static final String JWT_USERNAME = Claims.SUBJECT;

    // 用户头像
    public static final String JWT_AVATAR = "avatar";

    // 创建时间
    public static final String JWT_CREATED = "created";

    // 用户权限
    public static final String JWT_AUTHORITIES = "authorities";

    // 资源映射路径 前缀
    public static final String RESOURCE_PREFIX = "/profile";

    // RMI 远程方法调用
    public static final String LOOKUP_RMI = "rmi:";

    // LDAP 远程方法调用
    public static final String LOOKUP_LDAP = "ldap:";

    // LDAPS 远程方法调用
    public static final String LOOKUP_LDAPS = "ldaps:";

    // 自动识别json对象白名单配置（仅允许解析的包名，范围越小越安全）
    public static final String[] JSON_WHITELIST_STR = {"org.springframework", "ink.onei"};

    // 定时任务白名单配置（仅允许访问的包名，如其他需要可以自行添加）
    public static final String[] JOB_WHITELIST_STR = {"ink.onei"};

    // 定时任务违规的字符
    public static final String[] JOB_ERROR_STR = {"java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
            "org.springframework", "org.apache", "ink.onei.common.utils.file", "ink.onei.common.config"};

    // 云存储bobo图片路径前缀类型图片
    public static final String BOBO_TYPE = "bobo";

    // 云存储头像图片路径前缀类型图片
    public static final String AVATAR_TYPE = "avatar";

    // 云存储商品图片路径前缀类型图片
    public static final String GOODS_TYPE = "goods";

    // 云存储聊天图片路径前缀类型图片
    public static final String CHAT_TYPE = "chat";

    // 云存储其他文件路径前缀类型图片
    public static final String CLOUD_ETC = "abc";

    // 云存储访问密钥
    public static final String CLOUD_ACCESS_KEY = "AKIAXYKJSBEJLOQUTHX4";

    // 云存储秘密密钥
    public static final String CLOUD_SECRET_KEY = "h8ROlgShbJbJy4BGYk6snONRjm9MDCxl/Rmm8de3";

    // 云存储地址前缀
    public static final String PREFIX_URL = "https://0w0-0v0.s3.ap-northeast-2.amazonaws.com";

    // 云存储存储桶名称
    public static final String BUCKET_NAME = "0w0-0v0";
//    public static final String BUCKET_NAME = "gongzhu";

    // 高德地图旧访问密钥
    public static final String AMAP_KEY = "key=9b9ccf1ea6aee93829b36234c9980a86";

    // 高德地图逆地理API URL
    public static final String REGEO_BASE_URL = "https://restapi.amap.com/v3/geocode/regeo?";

    // 高德地图访问密钥
    public static final String AMAP_ACCESS_KEY = "2415919ffe5b9163bf0398beec9cf26f";

    // 高德地图秘密密钥
    public static final String AMAP_SECRET_KEY = "d906b79ced3db37f1a78aa264128dd86";
}
